import random

class Lx():

    # 案例4 ： 输出 9*9 乘法口诀表。
    def mul(self):
        # 1. 定义两个数x,y
        for x in range(1, 10):
            for y in range(1, x + 1):
                print("{} * {} = {}".format(x, y, x * y), end=" ")
            print()

    # 案例6 ：输入一个IP地址，判断是否输入正确，比如：12.12.23.34
    def is_ip_address(self,ip):
        # 1. 将字符串分隔开，split('.')
        ip_list = ip.split('.')
        # 2. 对列表进行长度判断  : len(list)
        if len(ip_list) != 4:
            return "ip地址错误，请检查"
        for x in ip_list:
            # 3. 对列表中的每一个元素判断是否是整数 ： isdigit()
            if not x.isdigit():
                return "ip地址格式不符合要求，请检查"
            # 4. 范围判断
            if not 0 <= int(x) <= 255:
                return "ip地址输入不正确，请检查"
        return "输入的ip地址是正确的！"

    # 1.把原字典的键值对颠倒生成一个新的键值对， 例如： 将该字典；{'A':'a', 'B':'b', 'C':'c'}， 键值对颠倒生成一个新的字典
    def reverse_dict(self,dct):
        new_dict = {}
        # 1. 判断传入的是否是字典，若不是直接返回错误 ：isinstance(数据类型，类型)
        if not isinstance(dct, dict):
            return "输入的数据类型不正确!"
        # 2. 循环字典 ，将每一个键值对重新赋值 ，items()
        for key, value in dct.items():
            new_dict[value] = key
        return new_dict

    # 2. 字符串s = 'Life is short You need python'。统计这个字符串中每个单词的字母数量.
    def statistics_word_nums(self):
        s = 'Life is short You need python'
        dct = {}
        # 1. 循环字符串，同时要把每个字符串按照空格分割开
        for x in s.split(" "):
            # 2. 统计每个单词的长度 ： len(word)
            dct[x] = len(x)
        # 3 。返回格式为字典
        return dct

    # 编写程序，随机生成10以内的一个整数，如果该数字大于圆周率 π，就将其当做直径计算圆的周长和面积；否则当做半径计算圆的周长和面积。最后将计算结果输出。提示 ：randint()

    def circle_result(self):
        P = 3.14
        result = {'area': 0.0, 'girth': 0.0}
        # 1. 生成随机数 ： randint(1,10)
        number = random.randint(1, 10)
        print(number)
        # 2. 判断条件
        if number > P:
            r = number / 2
            area = P * r * r
            girth = 2 * P * r
            result['area'] = area
            result['girth'] = girth
            return result

        area = P * number * number
        girth = 2 * P * number
        result['area'] = area
        result['girth'] = girth
        return result

    # 创建一个数据集，包含1到10的随机整数，共计100个数。 并统计每个数字的次数。
    def statistics_rand_nums(self):
        dict_num = {}
        # 1. 通过循环进行初始化
        for x in range(1, 11):
            dict_num[str(x)] = 0
        print(dict_num)

        # 2. 循环100次 ，每次都生成一个随机数
        for x in range(1, 101):
            number = random.randint(1, 10)
            dict_num[str(number)] += 1  # ==> dict_num[str(number)] =  dict_num[str(number)] + 1
        return dict_num


# lx1 = Lx()
# lx1.mul()